package com.example.demo8;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Message;

import java.util.Timer;
import java.util.TimerTask;

/**
 * 音乐播放器服务
 */
public class MusicService extends Service {
    private MediaPlayer player;     //定义播放器组件
    private Timer timer;        //计时器（记录音乐播放时长）

    public MusicService() {
    }
    @Override
    public void onCreate() {
        super.onCreate();
        player=new MediaPlayer();   //实例化播放器组件
    }

    //自定义一个binder类
    class MusicBinder extends Binder {
        //自定义一个音乐播放方法
        public void play()
        {
            try {
                player.reset();     //重置音乐播放器
                //加载多媒体资源
                player=MediaPlayer.create(getApplicationContext(),R.raw.music);
                player.start(); //播放音乐
                addtimer(); //添加计时器
            }catch (Exception e)
            {
                e.printStackTrace();
            }
        }
        //暂停播放音乐
        public void pausePlay()
        {
            player.pause();

        }
        //继续播放音乐
        public void continueplay()
        {
            player.start();
        }
        //通过进度条控制
        public void seekTo(int progress)
        {
            player.seekTo(progress);    //设置音乐播放的位置
        }
    }
    //自定义一个计时器，用于设置音乐播放器的进度条
    public void addtimer()
    {
        //判断timer是否为空，为空新建一个
        if (timer==null)
        {
            timer=new Timer();      //实例化Timer
            //创建一个时间多线程
            TimerTask timerTask=new TimerTask() {
                @Override
                public void run() {
                    if (player==null) return;
                    //获取歌曲总长度
                    int leng=player.getDuration();
                    //获取播放进度
                    int currentPosition = player.getCurrentPosition();
                    //创建消息对象
                    Message msg=MainActivity.handler.obtainMessage();
                    //将音乐总时长封装到消息对象中去
                    Bundle bundle=new Bundle();
                    bundle.putInt("leng",leng);
                    bundle.putInt("currentPosition",currentPosition);
                    msg.setData(bundle);
                    //将消息添加到主线程中去
                    MainActivity.handler.sendMessage(msg);

                }
            };
            //开始计时任务后5毫秒，执行第一次任务
            timer.schedule(timerTask,5,500);
        }

    }

    @Override
    public IBinder onBind(Intent intent) {
        return new MusicBinder();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        //销毁时停止播放音乐
        if (player==null) return;
        if (player.isLooping()) player.stop();
        //释放资源
        player.release();
        player=null;
    }
}
